% Ejercicio 4
% Problema: juan es_compatible_con X da 2 maria's.

:- op( 600, yfx, 'es' ).

juan es hombre.
juan es sereno.
juan es decidido.

maria es mujer.
maria es melancolico.

ursula es mujer.
ursula es decidido.

juana es mujer.
juana es sonador.

pedro es hombre.
pedro es reflexivo.

jose es hombre.
jose es melancolico.

son( H, M, PH, PM ) :- H es hombre, H es PH, M es mujer, M es PM, !.
son( M, H, PH, PM ) :- H es hombre, H es PH, M es mujer, M es PM, !.

:- op( 700, yfx, 'es_compatible_con' ).

X es_compatible_con Y :- son( X, Y, sereno, melancolico ).
X es_compatible_con Y :- son( X, Y, reflexivo, decidido ).
X es_compatible_con Y :- son( X, Y, decidido, sonador ).

% agregado 1

X es_compatible_con Y :- son( X, Y, decidido, melancolico ).
X es_compatible_con Y :- son( X, Y, melancolico, decidido ).

% agregado 2

:- op( 800, yf, 'es_deseable' ).

P es_deseable :- P es_compatible_con X, P es_compatible_con Y, X \= Y.

/*
  juan es_compatible_con maria --> Yes
  maria es_compatible_con juan --> Yes
  maria es_compatible_con ursula --> No
  
  juan es_deseable --> Yes
  juana es_deseable --> No
*/